/*    */ package com.zimbra.cs.imap;
/*    */ 
/*    */ import com.google.common.collect.ImmutableMap;
/*    */ import com.zimbra.common.localconfig.KnownKey;
/*    */ import com.zimbra.common.localconfig.LC;
/*    */ import com.zimbra.common.service.ServiceException;
/*    */ import com.zimbra.common.stats.RealtimeStatsCallback;
/*    */ import com.zimbra.common.util.Log;
/*    */ import com.zimbra.common.util.ZimbraLog;
/*    */ import com.zimbra.cs.server.NioConnection;
/*    */ import com.zimbra.cs.server.NioHandler;
/*    */ import com.zimbra.cs.server.NioServer;
/*    */ import com.zimbra.cs.server.ServerConfig;
/*    */ import com.zimbra.cs.server.ServerThrottle;
/*    */ import com.zimbra.cs.stats.ZimbraPerf;
/*    */ import java.util.Map;
/*    */ import org.apache.mina.core.session.IoSession;
/*    */ import org.apache.mina.filter.codec.ProtocolCodecFactory;
/*    */ import org.apache.mina.filter.codec.ProtocolDecoder;
/*    */ import org.apache.mina.filter.codec.ProtocolEncoder;
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ 
/*    */ public final class NioImapServer
/*    */   extends NioServer
/*    */   implements ImapServer, RealtimeStatsCallback
/*    */ {
/*    */   private final NioImapDecoder decoder;
/*    */   
/*    */   public NioImapServer(ImapConfig config)
/*    */     throws ServiceException
/*    */   {
/* 42 */     super(config);
/* 43 */     this.decoder = new NioImapDecoder();
/* 44 */     this.decoder.setMaxChunkSize(config.getWriteChunkSize());
/* 45 */     this.decoder.setMaxLineLength(config.getMaxRequestSize());
/* 46 */     this.decoder.setMaxLiteralSize(config.getMaxMessageSize());
/* 47 */     registerMBean(getName());
/* 48 */     ZimbraPerf.addStatsCallback(this);
/* 49 */     ServerThrottle.configureThrottle(config.getProtocol(), LC.imap_throttle_ip_limit.intValue(), LC.imap_throttle_acct_limit.intValue(), getThrottleSafeHosts(), getThrottleWhitelist());
/*    */   }
/*    */   
/*    */   public String getName()
/*    */   {
/* 54 */     return this.config.isSslEnabled() ? "ImapSSLServer" : "ImapServer";
/*    */   }
/*    */   
/*    */   public NioHandler createHandler(NioConnection conn)
/*    */   {
/* 59 */     return new NioImapHandler(this, conn);
/*    */   }
/*    */   
/*    */   protected ProtocolCodecFactory getProtocolCodecFactory()
/*    */   {
/* 64 */     new ProtocolCodecFactory()
/*    */     {
/*    */       public ProtocolEncoder getEncoder(IoSession session) throws Exception {
/* 67 */         return NioImapServer.DEFAULT_ENCODER;
/*    */       }
/*    */       
/*    */       public ProtocolDecoder getDecoder(IoSession session)
/*    */       {
/* 72 */         return NioImapServer.this.decoder;
/*    */       }
/*    */     };
/*    */   }
/*    */   
/*    */   public ImapConfig getConfig()
/*    */   {
/* 79 */     return (ImapConfig)super.getConfig();
/*    */   }
/*    */   
/*    */   public Log getLog()
/*    */   {
/* 84 */     return ZimbraLog.imap;
/*    */   }
/*    */   
/*    */   public Map<String, Object> getStatData()
/*    */   {
/* 89 */     String connStatName = getConfig().isSslEnabled() ? "imap_ssl_conn" : "imap_conn";
/* 90 */     String threadStatName = getConfig().isSslEnabled() ? "imap_ssl_threads" : "imap_threads";
/* 91 */     return ImmutableMap.of(connStatName, Integer.valueOf(getNumConnections()), threadStatName, Integer.valueOf(getNumThreads()));
/*    */   }
/*    */ }


/* Location:              /home/mint/zimbrastore.jar!/com/zimbra/cs/imap/NioImapServer.class
 * Java compiler version: 7 (51.0)
 * JD-Core Version:       0.7.1
 */